'''

随机读写文件

seek(offset, whence) 函数用于移动文件指针到文件的指定位置。


'''
import os
import random

# 打开文件
def open_file(filename, mode):
    try:
        file = open(filename, mode)
        return file
    except FileNotFoundError:
        print("文件不存在")
        return None

# 任意位置读写文件
def random_access_file(filename):
    file = open_file(filename, 'r+')
    if file is None:
        return

    # 获取文件大小
    file.seek(0, os.SEEK_END)
    file_size = file.tell()

    # 随机读写
    while True:
        # 生成随机位置
        pos = random.randint(0, file_size - 1)
        file.seek(pos)

        # 读取一个字节
        byte = file.read(1)
        print(f"读取位置{pos}的字节：{byte}")

        # 写入一个字节
        byte_to_write = chr(random.randint(0, 255))
        file.seek(pos)
        file.write(byte_to_write)
        print(f"写入位置{pos}的字节：{byte_to_write}")

        # 是否继续
        cont = input("是否继续？（y/n）")
        if cont.lower() != 'y':
            break

    file.close()

# 测试
random_access_file('test.txt')
